#include <vector>
#include <iostream>

using namespace std;

//2.1
vector<int> s1(vector<int> arr)
{
  vector<int> result(arr.size(), 0);
  for (int i = 0; i < arr.size(); ++i)
  {
    if (arr[i] != 0)
    {
      result[i] = arr[i];
    }
    else{ // arr[i] == 0
      result[i] = 0;
      result[i+1] = 0;
      ++i;
    }
  }
  return result;
}


// 写一个函数 shift_vector_right 数组右移
// v  {1, 2, 3, 4}
//
// v' {1, 2, 2, 3}
// 从数组的索引 1 开始向右移动 1 个位置
// v'' {1, 1, 2, 3}
// 从索引 0 开始，向右移动 1 个位置
//          v
// w {1, 5, 8, 2, 6} 从索引 2 右移 1 位
// 从右向左进行的
// 第一步 {1, 5, 8, 2, 2}
// 第二步 {1, 5, 8, 8, 2}
//
//   {1, 5, 8, 8, 2}

// 从数组 v 的索引 idx 开始，向右移动 1 个位置并返回
vector<int> shift_vector_right(vector<int> v, int idx) {

}

/*
nums1 = [1, 2, 3]
               ^r1
nums2 = [0, 5, 6]
               ^r2
                        vp
nums1 = [1, 2, 3, 0, 0, 0]
*/

void merge(vector<int> &nums1, vector<int> nums2, int m, int n) {
	// 1. 扩容 nums1，nums2 中有多少个元素，我们就在 nums1 的末尾添加多少个 0
  // 通过 n 或者 nums2.size()
  int r1 = m - 1;

  for (int i = 0; i < nums2.size(); ++i) {
    nums1.push_back(0);
  }

  int p = nums1.size() - 1;
  int r2 = n - 1;

  // 从右向左按顺序插入到 nums1
}

int main(int argc, char const *argv[])
{
  vector<int> v;
  v = s1({1,0,2,3,0,4,5,0});
  for (int n : v)
  {
    cout << n << " ";
  }
  cout << endl;
  return 0;
}